package schema

import (
	"time"
)

// GroupMember 群成员对象
type GroupMember struct {
	ID        string    `json:"id"`                                    // 唯一标识
	GroupId   string    `json:"group_id" binding:"required"`           // 群ID
	UserId    string    `json:"user_id" binding:"required"`            // 用户ID
	ReciteDay int       `json:"recite_day"`                            // 群内背诵天数
	Status    int       `json:"status" binding:"required,max=2,min=1"` // 群内用户状态(1:正常 2:罚款)
	Creator   string    `json:"creator"`                               // 创建者
	CreatedAt time.Time `json:"created_at"`                            // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                            // 更新时间
}

// GroupMemberUpdate 群成员对象
type GroupMemberUpdate struct {
	ID        string    `json:"id"`                                     // 唯一标识
	GroupId   string    `json:"group_id" binding:"omitempty"`           // 群ID
	UserId    string    `json:"user_id" binding:"omitempty"`            // 用户ID
	ReciteDay int       `json:"recite_day"`                             // 群内背诵天数
	Status    int       `json:"status" binding:"omitempty,max=2,min=1"` // 群内用户状态(1:正常 2:罚款)
	Creator   string    `json:"creator"`                                // 创建者
	CreatedAt time.Time `json:"created_at"`                             // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                             // 更新时间
}

func (a *GroupMemberUpdate) ToGroupMember() *GroupMember {
	return &GroupMember{
		ID:        a.ID,
		GroupId:   a.GroupId,
		UserId:    a.UserId,
		ReciteDay: a.ReciteDay,
		Status:    a.Status,
		Creator:   a.Creator,
		CreatedAt: a.CreatedAt,
		UpdatedAt: a.UpdatedAt,
	}
}

// GroupMemberQueryParam 查询条件
type GroupMemberQueryParam struct {
	PaginationParam
	GroupId   string `form:"group_id"`   // 群ID
	UserId    string `form:"user_id"`    // 用户ID
	ReciteDay int    `form:"recite_day"` // 群内背诵天数
	Status    int    `form:"status"`     // 群内用户状态(1:正常 2:罚款)
	Creator   string `form:"creator"`    // 创建者

}

// GroupMemberQueryOptions 查询可选参数项
type GroupMemberQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// GroupMemberQueryResult 查询结果
type GroupMemberQueryResult struct {
	Data       GroupMembers
	PageResult *PaginationResult
}

// GroupMembers 群成员列表
type GroupMembers []*GroupMember
